package com.zc.topmod.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by zhucan on 19/4/9.
 */
@Slf4j
public class FileUtils {
    /**
     * CSV文件读取处理类
     *
     * @param filepath
     * @return
     */
    public static List<String> readCsvFile(String separator, String filepath) {
        File csv = new File(filepath);  // CSV文件路径
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(csv));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String line = "";
        String everyLine = "";
        int csvrow = 0;
        /**
         *  列1:倾角α（°）
         *  列2:倾角β（°）
         *  列3:长度L1（mm）
         *  列4:长度L2（mm）
         *  列5:测量D1（mm）
         *  列6:测量D2（mm）
         *  列7:测量D3（mm）
         *  列8:计算值x1（mm）
         *  列9计算值y1（mm）
         *  列10:计算值z1（mm）
         *  列11:计算值x2（mm）
         *  列12:计算值y2（mm）
         *  列13:计算值z2（mm）
         *  列14:计算值x3（mm）
         *  列15:计算值y3（mm）
         *  列16:计算值z3（mm）
         *  列17:计算值z3（mm）
         *  列18:计算值z4（mm）
         *  列19:棱镜高度坐标Z（mm）
         *  列20:计算值(及画图的Y坐标）Z-/z4/（mm）
         *  列21:画图的x坐标（m)
         */
        List<String> allString = new ArrayList<>();
        try {
            while ((line = br.readLine()) != null)  //读取到的内容给line变量
            {
                everyLine = line;
                System.out.println(everyLine);
                allString.add(everyLine);
            }
            System.out.println("csv表格中所有行数：" + allString.size());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return allString;
    }

    public static void writeCsvFile(String separator, String filepath, List<String> allWriteString) {
        log.info("==========> 开始写入文件");
        File csv = new File(filepath);  // CSV文件路径
        if (csv.exists()) {
            csv.delete();
        }
        BufferedWriter bw = null; // 附加
        try {
//            bw = new BufferedWriter(new FileWriter(csv, true));
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csv),"ANSI"));
            // 添加新的数据行
            for (int i = 0; i < allWriteString.size(); i++) {
                StringBuffer strbuf = new StringBuffer();
                strbuf.append(allWriteString.get(i));
                bw.write(strbuf.toString());
                bw.newLine();
            }
            bw.close();
        } catch (FileNotFoundException e) {
            // File对象的创建过程中的异常捕获
            e.printStackTrace();
        } catch (IOException e) {
            // BufferedWriter在关闭对象捕捉异常
            e.printStackTrace();
        } finally {
            try {
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return;
    }


    public static void main(String[] args) {

        try {
            File csv = new File("/Users/zhucan/test.csv"); // CSV数据文件

            BufferedWriter bw = new BufferedWriter(new FileWriter(csv, true)); // 附加
            // 添加新的数据行
            bw.write("\"test\"" + "," + "\"1988\"" + "," + "\"1992\"");
            bw.newLine();
            bw.close();

        } catch (FileNotFoundException e) {
            // File对象的创建过程中的异常捕获
            e.printStackTrace();
        } catch (IOException e) {
            // BufferedWriter在关闭对象捕捉异常
            e.printStackTrace();
        }

        return;
    }
}
